CCD 并发时钟数据优化

概念解析

定义与起源

术语定义:CCD(Concurrent Clock and Data,并发时钟数据优化)是Synopsys物理设计工具中的一项高级优化技术——在同一个优化引擎里同时调整时钟延迟和数据路径延迟。传统流程中CTS(时钟树综合)和Data Path Optimization是分开的——CTS先把时钟延迟固定了,然后优化数据路径在这个固定时钟延迟下满足时序。CCD打破了这一顺序——同时移动时钟和数据。

CCD的核心insight是:有时修数据路径不如修时钟路径。如果一条setup-violated路径的数据到达太晚——传统做法是加快数据路径。CCD说:为什么不把捕获时钟延迟一点?把时钟沿往后推——等于给数据更多时间。这就是useful skew——CCD自动找到最优的useful skew分配。

核心要义

第一,CCD打破了"CTS先、数据后"的线性流程。 传统流程:Placement→CTS(固定clock latency)→Post-CTS Optimization(调整数据路径)。CCD:Placement→CCD(Joint Optimization of clock+data)→Post-CCD Refinement。CCD可以在数据优化过程中调整时钟——如果发现某条路径的setup可以通过延迟捕获时钟解决——CCD会插入时钟buffer——不是数据buffer。

第二,CCD的优化空间=时钟延迟的"可借区间"。 你可以把捕获时钟延迟——但不能延迟超过一个时钟周期(否则数据就到了下一个周期)。每位时钟延迟——受hold margin限制(延迟太多会导致hold violation)。CCD在setup margin和hold margin之间找最优的时钟延迟分配。

第三,CCD特别适合高度不平衡的数据路径。 如果一条路径有30级逻辑(长路径、setup紧张)而相邻路径只有5级(短路径、hold紧张)——CCD可以给长路径的捕获时钟加延迟(帮setup)、给短路径的发射时钟加延迟(帮hold)。人工做这种逐路径的时钟偏斜几乎不可能。

实践应用

* CCD不是替代CTS——是增强CTS:CTS建立初始时钟树拓扑→CCD在初始拓扑上做精细调整。 * CCD的适用范围:对setup和hold都紧张的设计(高度优化)效果最好。对于hold-rich的设计(很多hold余量)也可以利用hold余量换setup。 * CCD和useful skew的关系:useful skew是概念——CCD是自动化工具。CCD自动发现并利用useful skew机会。

实战案例

- 某GPU的CCD救局:传统流程跑完后WNS=-30ps——修了3轮ECO还是负。开CCD——自动给8条关键路径的捕获时钟加5-15ps延迟——WNS变为+5ps。而这8条路径的hold全clean——hold margin正好够。 - CCD vs 手工useful skew:某芯片的手工useful skew调了2周——只调了12条路径。CCD 3小时自动调了全部50万+路径——找到2300条可从useful skew受益的路径——WNS从-40ps变+15ps。 - CCD的hold风险:CCD在某设计上过于激进——给200+条路径的时钟加了延迟——导致50条hold violation。调整CCD的hold margin约束后——降到5条hold violation——全部可手工修复。

原话引用

> "CCD is like having a timing engineer who can simultaneously optimize every clock buffer and every data path on your chip."—— Synopsys ICC2 首席架构师, 2018 > "传统CTS先固定时钟再调数据——CCD说'时钟和数据是一家人,为什么要分开优化?'"—— SNUG San Jose 2019 > "CCD不是魔法——它只是把你已经在手工做的事情自动化了。但它比你做得更快、更全面、更不会漏。"—— 物理设计工程师, 内部经验

常见误区

误区一:CCD能解决所有时序问题。 CCD擅长修复中等到轻微的setup violation。对于严重的violation(WNS<-100ps)——需要架构级修复(减少逻辑级数、增大驱动)。CCD是精修工具——不是重构工具。

误区二:CCD开了一定更好。 CCD在某些设计上可能过度优化——引入了过多的时钟调整——增加了OCV敏感度和hold violation风险。always run with hold margin check。

误区三:CCD=useful skew。 CCD包含useful skew——但还有更多:它同时优化data path logic restructuring、buffer sizing、VT swapping——不只是时钟偏斜。

思想演变

- 2010:CCD首次引入ICC:最初的CCD只在CTS阶段做concurrent优化。 - 2015:CCD扩展到全流程:Fusion Compiler将CCD扩展到placement、CTS、post-route——全流程concurrent优化。 - 2018:CCD+机器学习:ML预测哪些路径最可能从CCD受益——优先在这些路径上开CCD——节省运行时间。 - 2022–present:CCD+AI 自动调参:AI自动调CCD的约束参数——无需人工设置hold margin/effort level。

相关论文

- 以可承受的 TAT 完成超大型 65nm ASIC 设计的流片 - 炫铁RISC-V CPU IP参考流程:使用Fusion Compiler最大化每瓦性能 - Redhawk-SC Fusion驱动的IR感知布局 - 使用 IC Compiler II CCD 流程在 8M 实例扁平化设计中更快实现时序收敛/SNUG_TPC_CCD_Dorso_Untitled_paper_1.md) - 并发时钟与数据优化(CCD)技术亮点与瑞萨成功经验分享/SNUG_TPC_CCD_Gobok_2018_Synopsys_Inc_paper.md) - 高速内核实现的布局布线流程定制化/SNUG_TPC_CCD_高速内核实现的布局布线流程定制化.md) - 仅H-Tree(无Mesh)常规MSCTS结合CCD用于ARM Cortex-A73多时钟设计的ICC II实现与QoR改进/SNUG_TPC_Htree_MSCTS_CCD_CortexA73_ICC2.md) - 使用IC Compiler II加速设计收敛:拥塞驱动重构、并发时钟数据优化和多源时钟树综合/使用ICCII加速设计收敛_CDR_CCD_MSCTS.md) - 在 GF 22FDX 上使用 Synopsys 设计平台实现 ARM Cortex-A53 四核 - 利用有用偏斜增强技术加速IC Compiler II时序收敛 - IC Compiler II中降低功耗的几种方法 - 2.1GHz ARM Cortex-A55功耗约束存储SoC的实现流程 - 面向功耗受限 SoC 的 2.1GHz ARM Cortex-A55 实现流程 - 2.1GHz ARM Cortex-A55 实现流程:面向功耗受限的存储 SoC - 复杂时钟结构设计的 CTS 挑战